package demo.practice.heap;

import java.util.Arrays;
import java.util.List;
import java.util.PriorityQueue;

public class Offer40 {
    public int[] getLeastNumbers(int[] arr, int k) {
        PriorityQueue<Integer> queue = new PriorityQueue<Integer>((i,j)->i-j);  // 最小的k个数  ，需要维护一个  大顶堆   保留  上大下小，移除堆顶超过  k个的数
        int i = 0;
        while (i < arr.length) {
            queue.add(arr[i++]);
            if (queue.size() > k)
                queue.remove();
        }

        int[] out = new int[k];
        for (int j=0 ;j<out.length;j++
        ) {
            out[j]=queue.remove();
        }

        return out;
    }

}
